/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import java.util.ArrayList;
import DTO.HistorialDTO;
import SQL.Conexion;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Date;


/**
 *
 * @author SoftGroup
 */
public class HistorialDAO {
    
    public static ArrayList<HistorialDTO> HistorialCompleto()
    {
        Connection conexion = Conexion.getConexion();
        ArrayList<HistorialDTO> salida = new ArrayList<>();
        try {
            String sql = "SELECT * FROM historial";
            PreparedStatement buscar = conexion.prepareStatement(sql);
            ResultSet resultado = buscar.executeQuery();
            while (resultado.next()) 
            {                
                HistorialDTO auditoria = new HistorialDTO();
                auditoria.setCodigo(resultado.getInt(1));
                auditoria.setUser(resultado.getString(2));
                auditoria.setNombre_usuario(resultado.getString(3));
                auditoria.setPerfil(resultado.getString(4));
                auditoria.setAccion(resultado.getString(5));
                auditoria.setTipo(resultado.getString(6));
                auditoria.setFecha(resultado.getDate(7));
                auditoria.setHora(resultado.getTime(8));
                auditoria.setFolio_ingresado(resultado.getInt(9));
                auditoria.setRut_ingresado(resultado.getString(10));
                salida.add(auditoria);
            }
        } catch (Exception e) {
            javax.swing.JOptionPane.showMessageDialog(null, "Error HistorialCompleto: "+e);
        }
        return salida;
    }
    
    public static ArrayList<HistorialDTO> BuscarPorTipo(String tipo)
    {
        Connection conexion = Conexion.getConexion();
        ArrayList<HistorialDTO> salida = new ArrayList<>();
        try {
            String sql = "SELECT * FROM historial WHERE tipo=?";
            PreparedStatement buscar = conexion.prepareStatement(sql);
            buscar.setString(1, tipo);
            ResultSet resultado = buscar.executeQuery();
            while (resultado.next()) 
            {                
                HistorialDTO auditoria = new HistorialDTO();
                auditoria.setCodigo(resultado.getInt(1));
                auditoria.setUser(resultado.getString(2));
                auditoria.setNombre_usuario(resultado.getString(3));
                auditoria.setPerfil(resultado.getString(4));
                auditoria.setAccion(resultado.getString(5));
                auditoria.setTipo(resultado.getString(6));
                auditoria.setFecha(resultado.getDate(7));
                auditoria.setHora(resultado.getTime(8));
                auditoria.setFolio_ingresado(resultado.getInt(9));
                auditoria.setRut_ingresado(resultado.getString(10));
                salida.add(auditoria);
            }
        } catch (Exception e) {
            javax.swing.JOptionPane.showMessageDialog(null, "Error BuscarPorTipo: "+e);
        }
        return salida;
    }
    
    public static ArrayList<HistorialDTO> BuscarPorAccion(String accion)
    {
        Connection conexion = Conexion.getConexion();
        ArrayList<HistorialDTO> salida = new ArrayList<>();
        try {
            String sql = "SELECT * FROM historial WHERE accion=?";
            PreparedStatement buscar = conexion.prepareStatement(sql);
            buscar.setString(1, accion);
            ResultSet resultado = buscar.executeQuery();
            while (resultado.next()) 
            {                
                HistorialDTO auditoria = new HistorialDTO();
                auditoria.setCodigo(resultado.getInt(1));
                auditoria.setUser(resultado.getString(2));
                auditoria.setNombre_usuario(resultado.getString(3));
                auditoria.setPerfil(resultado.getString(4));
                auditoria.setAccion(resultado.getString(5));
                auditoria.setTipo(resultado.getString(6));
                auditoria.setFecha(resultado.getDate(7));
                auditoria.setHora(resultado.getTime(8));
                auditoria.setFolio_ingresado(resultado.getInt(9));
                auditoria.setRut_ingresado(resultado.getString(10));
                salida.add(auditoria);
            }
        } catch (Exception e) {
            javax.swing.JOptionPane.showMessageDialog(null, "Error BuscarPorAccion: "+e);
        }
        return salida;
    }
    
    public static ArrayList<HistorialDTO> BuscarPorUsuario(String user)
    {
        Connection conexion = Conexion.getConexion();
        ArrayList<HistorialDTO> salida = new ArrayList<>();
        try {
            String sql = "SELECT * FROM historial WHERE user=?";
            PreparedStatement buscar = conexion.prepareStatement(sql);
            buscar.setString(1, user);
            ResultSet resultado = buscar.executeQuery();
            while (resultado.next()) 
            {                
                HistorialDTO auditoria = new HistorialDTO();
                auditoria.setCodigo(resultado.getInt(1));
                auditoria.setUser(resultado.getString(2));
                auditoria.setNombre_usuario(resultado.getString(3));
                auditoria.setPerfil(resultado.getString(4));
                auditoria.setAccion(resultado.getString(5));
                auditoria.setTipo(resultado.getString(6));
                auditoria.setFecha(resultado.getDate(7));
                auditoria.setHora(resultado.getTime(8));
                auditoria.setFolio_ingresado(resultado.getInt(9));
                auditoria.setRut_ingresado(resultado.getString(10));
                salida.add(auditoria);
            }
        } catch (Exception e) {
            javax.swing.JOptionPane.showMessageDialog(null, "Error BuscarPorUsuario: "+e);
        }
        return salida;
    }
    
    public static ArrayList<HistorialDTO> BuscarPorPerfil(String perfil)
    {
        Connection conexion = Conexion.getConexion();
        ArrayList<HistorialDTO> salida = new ArrayList<>();
        try {
            String sql = "SELECT * FROM historial WHERE perfil=?";
            PreparedStatement buscar = conexion.prepareStatement(sql);
            buscar.setString(1, perfil);
            ResultSet resultado = buscar.executeQuery();
            while (resultado.next()) 
            {                
                HistorialDTO auditoria = new HistorialDTO();
                auditoria.setCodigo(resultado.getInt(1));
                auditoria.setUser(resultado.getString(2));
                auditoria.setNombre_usuario(resultado.getString(3));
                auditoria.setPerfil(resultado.getString(4));
                auditoria.setAccion(resultado.getString(5));
                auditoria.setTipo(resultado.getString(6));
                auditoria.setFecha(resultado.getDate(7));
                auditoria.setHora(resultado.getTime(8));
                auditoria.setFolio_ingresado(resultado.getInt(9));
                auditoria.setRut_ingresado(resultado.getString(10));
                salida.add(auditoria);
            }
        } catch (Exception e) {
            javax.swing.JOptionPane.showMessageDialog(null, "Error BuscarPorUsuario: "+e);
        }
        return salida;
    }
    
    public static ArrayList<HistorialDTO> BuscarPorRangoFecha(String inicio, String fin)
    {
        Connection conexion = Conexion.getConexion();
        ArrayList<HistorialDTO> salida = new ArrayList<>();
        try {
            String sql = "SELECT * FROM historial WHERE DATE(fecha) BETWEEN '" + inicio + "' AND '" + fin + "'";
            PreparedStatement buscar = conexion.prepareStatement(sql);
            ResultSet resultado = buscar.executeQuery();
            while (resultado.next()) 
            {                
                HistorialDTO auditoria = new HistorialDTO();
                auditoria.setCodigo(resultado.getInt(1));
                auditoria.setUser(resultado.getString(2));
                auditoria.setNombre_usuario(resultado.getString(3));
                auditoria.setPerfil(resultado.getString(4));
                auditoria.setAccion(resultado.getString(5));
                auditoria.setTipo(resultado.getString(6));
                auditoria.setFecha(resultado.getDate(7));
                auditoria.setHora(resultado.getTime(8));
                auditoria.setFolio_ingresado(resultado.getInt(9));
                auditoria.setRut_ingresado(resultado.getString(10));
                salida.add(auditoria);
            }
        } catch (Exception e) {
            javax.swing.JOptionPane.showMessageDialog(null, "Error BuscarPorUsuario: "+e);
        }
        return salida;
    }
}
